﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SanFranciscoModel.Alumno;
using System.Text.RegularExpressions;
using SanFranciscoModel.Curso;

namespace SanFranciscoModel.Intermedias
{
    public class AlumnoXCursoManager
    {
        //Si el alumno ya esta en un curso devuelvo true, sino false
        public bool yaAsignadoCurso(int dni)
        {
            AlumnoXCursoDataContext db = new AlumnoXCursoDataContext();
            AlumnoXCurso AlumnoXCurso = new AlumnoXCurso();
            Curso.CursoManager CursoManager = new CursoManager();
            

            var objeto = from alumnoXcurso in db.AlumnoXCursos
                         where alumnoXcurso.DNIAlumno == dni
                         select alumnoXcurso;

            foreach (var alum in objeto)
            {
                AlumnoXCurso = alum;
            }

            if (AlumnoXCurso.DNIAlumno == dni)
            {
                if (CursoManager.ExisteCurso(AlumnoXCurso.idCurso,DateTime.Now.Year))
                {
                    return true;
                }
            }
            else
            {
                return false;
            }

            return false;

        }

        public SanFranciscoModel.Curso.Curso getAlumnoXCursobyDNIAlumno(int dniAlumno)
        {
            AlumnoXCursoDataContext db = new AlumnoXCursoDataContext();
            
            SanFranciscoModel.Curso.Curso Curso = new SanFranciscoModel.Curso.Curso();
            Curso.CursoManager CursoManager = new CursoManager();


            var objeto = from alumnoXcurso in db.AlumnoXCursos
                         where alumnoXcurso.DNIAlumno == dniAlumno
                         select alumnoXcurso;

            foreach (var alum in objeto)
            {
                Curso = CursoManager.getCursoActualbyId(alum.idCurso);
            }

            return Curso;

        }

        //Retorna un Curso si el Alumno esta asignado
        public int AlumnoAsignadoACurso(int dni)
        {
            AlumnoXCursoDataContext db = new AlumnoXCursoDataContext();
            AlumnoXCurso AlumnoXCurso = new AlumnoXCurso();
            Curso.CursoManager CursoManager = new CursoManager();
            Alumno.AlumnoManager AlumnoManager = new Alumno.AlumnoManager();
            Alumno.Alumno Alumno = new SanFranciscoModel.Alumno.Alumno();
            

            var objeto = from alumnoXcurso in db.AlumnoXCursos
                         where alumnoXcurso.DNIAlumno == dni
                         select alumnoXcurso;

            foreach (var alum in objeto)
            {
                AlumnoXCurso = alum;
            }

            if (AlumnoXCurso.DNIAlumno == dni)
            {
                if (CursoManager.ExisteCurso(AlumnoXCurso.idCurso, 2012))
                {
                    return AlumnoXCurso.idCurso;
                }
            }

            return 0;

        }

        public void guardarAlumnoXCurso(int dni, int idCurso)
        {
            AlumnoXCursoDataContext db = new AlumnoXCursoDataContext();
            AlumnoXCurso AlumnoXCurso = new AlumnoXCurso();

            AlumnoXCurso.DNIAlumno=dni;
            AlumnoXCurso.idCurso = idCurso;

            try
            {
                db.AlumnoXCursos.InsertOnSubmit(AlumnoXCurso);
                db.SubmitChanges();
            }
            catch (Exception e)
            {
            }

        }

        public void updateAlumnoXCurso(AlumnoXCurso AlumnoXCursoGuardar, AlumnoXCurso AlumnoXCursoAnterior)
        {
            AlumnoXCursoDataContext db = new AlumnoXCursoDataContext();


            try
            {
                var objeto = from a in db.AlumnoXCursos
                             where a.DNIAlumno == AlumnoXCursoAnterior.DNIAlumno
                             && a.idCurso == AlumnoXCursoAnterior.idCurso
                             select a;

                foreach (var x in objeto)
                {
                    db.AlumnoXCursos.DeleteOnSubmit(x);
                    db.SubmitChanges();
                }

                db.AlumnoXCursos.InsertOnSubmit(AlumnoXCursoGuardar);
                db.SubmitChanges();
            }
            catch (Exception e)
            {
            }

        }

        public bool IsNumeric(object Expression)
        {
            bool isNum;
            double retNum;

            isNum = Double.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum);
            return isNum;
        }



        public void guardarCursoXMateriaXDocente(int idCurso,int idMateria, int DNIDocente)
        {
            CursoXMateriaXDocenteDataContext db = new CursoXMateriaXDocenteDataContext();
            CursoXMateriaXDocente CursoXMateriaXDocente = new CursoXMateriaXDocente();

            CursoXMateriaXDocente.IdCurso = idCurso;
            CursoXMateriaXDocente.IdDocente = DNIDocente;
            CursoXMateriaXDocente.IdMateria = idMateria;

            
            try
            {
                db.CursoXMateriaXDocentes.InsertOnSubmit(CursoXMateriaXDocente);
                db.SubmitChanges();
            }
            catch (Exception e)
            {
            }

        }

        public bool ExisteCursoXMateriaXDocente(int idCurso, int idMateria, int DNIDocente)
        {
            CursoXMateriaXDocente CursoXMateriaXDocente = new Intermedias.CursoXMateriaXDocente();
            CursoXMateriaXDocenteDataContext db = new CursoXMateriaXDocenteDataContext();

            var objeto = from x in db.CursoXMateriaXDocentes
                         where x.IdCurso == idCurso
                         && x.IdDocente == DNIDocente
                         && x.IdMateria == idMateria
                         select x;


            foreach (var d in objeto)
            {
                CursoXMateriaXDocente = d;
            }

            if (CursoXMateriaXDocente.IdCurso == idCurso)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

    }
}
